﻿using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Collections.Generic;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Microsoft.Practices.ObjectBuilder;
using GC2.Bussines.BMSeguridad;
using GC2.Entities.Seguridad;
using GC2.ExceptionHandler;

public partial class BMSeguridad_AdministracionAplicaciones : GenericPage
{    
    private ExceptionConstructor exNew = new ExceptionConstructor();

    private Aplicaciones aplicacionBuscada
    {
        get
        {
            if (ViewState["aplicacionBuscada"] != null)
            {
                return (Aplicaciones)ViewState["aplicacionBuscada"];
            }
            else
            {
                return new Aplicaciones();
            }
        }
        set
        {
            ViewState["aplicacionBuscada"] = value;
        }
    }

    private List<Aplicaciones> aplicacionesSource
    {
        get
        {
            return (List<Aplicaciones>)ViewState["aplicacionesSource"];
        }

        set
        {
            ViewState["aplicacionesSource"] = value;
        }

    }

    private Aplicaciones aplicacionActual
    {
        get
        {
            if (ViewState["aplicacionActual"] != null)
                return (Aplicaciones)ViewState["aplicacionActual"];
            else
                return null;
        }
        set
        {
            this.ViewState["aplicacionActual"] = value;
        }
    }


  
    #region Controles

    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            SetearCultura();
            SetearConexion();
            if (!this.IsPostBack)
            {
                //string permiso =  ControlPermisos(int IdPermiso, int IdUsuario);
                //int iId_Usuario = System.Convert.ToInt32(Session["Id_Usuario"]);
                //string srtPermiso = ControlPermisos((int)UI_Permissions.frmAplicaciones, iId_Usuario);
                //string strPermiso = "S";
                //if (srtPermiso != "S")
                //{
                //    Response.Redirect("~/Error.aspx", false);
                //}
                //else
                //{
                BMAplicaciones _presenter = new BMAplicaciones(Connection);
                aplicacionesSource = _presenter.BMAplicacionesGetAll();
                //}
            }
        }
        catch (Exception ex)
        {
            ErrorUI(ex);
        }
    }

    protected void btnBuscar_Click(object sender, EventArgs e)
    {
        try
        {
            BMAplicaciones _presenter = new BMAplicaciones(Connection);
            Aplicaciones oAplicacion = new Aplicaciones();
            oAplicacion.Nombre_Aplicacion = txtAplicacion.Text.Trim();
            oAplicacion.Descripcion_Aplicacion = txtDescripcion.Text.Trim();
            oAplicacion.Modo_Autenticacion = "";

            // Guarda las características de la búsqueda
            aplicacionBuscada = oAplicacion;

            aplicacionesSource = _presenter.BMAplicacionesSearch(oAplicacion);

            GridDataBound();
        }
        catch (Exception ex)
        {
            ErrorUI(ex);
        }
    }

    protected void btnNuevo_Click(object sender, EventArgs e)
    {
        try
        {
            Aplicaciones aplicacion = new Aplicaciones();
            aplicacion = null;

            Session["Aplicacion"] = aplicacion;
            Response.Redirect("AdministracionAplicacionesTab.aspx", false);
        }
        catch (Exception ex)
        {
            ErrorUI(ex);
        }
    }

    protected void btnCancelar_Click(object sender, EventArgs e)
    {
        Response.Redirect("../Default.aspx", false);
    }

    /// <summary>
    /// Responde al evento 'Eliminar' de la Grilla dgAplicaciones
    /// se eliminará el elemento seleccionado de la Tabla Seguridad.Aplicaciones
    /// baja lógica: aplicacion.Fecha_Hasta = System.DateTime.Now(); 
    /// CB 17-07-2007
    /// </summary>
    protected void dgAplicaciones_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        try
        {
            BMAplicaciones _presenter = new BMAplicaciones(Connection);
            // Da de baja la aplicación con sus roles asociados
            Aplicaciones aplicacion = new Aplicaciones();
            Label label = (Label)dgAplicaciones.Rows[e.RowIndex].Cells[0].FindControl("Id_Aplicacion");
            aplicacion.Id_Aplicacion = int.Parse(label.Text.Trim());
            aplicacionActual = aplicacion;
            aplicacion = _presenter.BMAplicacionesGetOne(aplicacionActual);
            aplicacion.Fecha_Hasta = DateTime.Parse(DateTime.Now.ToString("dd/MM/yyyy"));
            _presenter.BMAplicacionesDelete(aplicacion);

            // Actualiza la grilla
            aplicacionesSource = _presenter.BMAplicacionesSearch(aplicacionBuscada);
            GridDataBound();
        }
        catch (Exception ex)
        {
            ErrorUI(ex);
        }

    }

    protected void dgAplicaciones_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        dgAplicaciones.PageIndex = e.NewPageIndex;
        GridDataBound();
    }

    protected void dgAplicaciones_SelectedIndexChanged(object sender, EventArgs e)
    {
        try
        {
            BMAplicaciones _presenter = new BMAplicaciones(Connection);
            Aplicaciones aplicacion = new Aplicaciones();
            aplicacion.Id_Aplicacion = (int)dgAplicaciones.SelectedDataKey.Value;
            aplicacionActual = aplicacion;
            aplicacion = _presenter.BMAplicacionesGetOne(aplicacionActual);

            Session["Aplicacion"] = aplicacion;
            Response.Redirect("AdministracionAplicacionesTab.aspx", false);
        }
        catch (Exception ex)
        {
            ErrorUI(ex);
        }
    }

    protected void btnCancelarAplicacion_Click(object sender, EventArgs e)
    {
        Response.Redirect("Default.aspx", false);
    }

    protected void btnCancelarRoles_Click(object sender, EventArgs e)
    {
        Response.Redirect("Default.aspx", false);
    }

    #endregion


    #region Metodos

    private int AplicacionActual
    {
        get
        {
            if (ViewState["AplicacionActual"] != null)
                return (int)ViewState["AplicacionActual"];
            else
                return 0;
        }
        set
        {
            this.ViewState["AplicacionActual"] = value;
        }
    }

    private void GridDataBound()
    {

        dgAplicaciones.DataSource = aplicacionesSource;
        dgAplicaciones.DataBind();

    }
   
    #endregion

}


